﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Kaesoft.Hospedaje.Entities;

namespace Kaesoft.Hospedaje.Services
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IServicioParametrizacion" in both code and config file together.
    [ServiceContract]
    public interface IServicioParametrizacion
    {
        [OperationContract]
        [ServiceKnownType(typeof(Catalogo))]
        List<Catalogo> ObtenerCatalogos(int tipoCatalogo);

        [OperationContract]
        [ServiceKnownType(typeof(CatalogoSummary))]
        List<CatalogoSummary> ObtenerCatalogoSummary(int tipoCatalogo);

        [OperationContract]
        [ServiceKnownType(typeof(CatalogoSummary))]
        PaginatedList<CatalogoSummary> ObtenerCatalogoSummaryPorCriterio(int tipoCatalogo, int tipoConsulta, string criterio, int indice);

        [OperationContract]
        [ServiceKnownType(typeof(Parametro))]
        List<Parametro> ObtenerParametrosSistema();

        [OperationContract]
        [ServiceKnownType(typeof(Usuario))]
        List<Usuario> ObtenerUsuarios();

        [OperationContract]
        [ServiceKnownType(typeof(Parametro))]
        void GrabarParametroSistema(List<Parametro> parametros);

        [OperationContract]
        [ServiceKnownType(typeof(EstructuraCatalogo))]
        List<EstructuraCatalogo> ObtenerTipoCatalogos();

        [OperationContract]
        [ServiceKnownType(typeof(Catalogo))]
        void GrabarCatalogo(List<Catalogo> catalogos);

        [OperationContract]
        [ServiceKnownType(typeof(EstructuraCatalogo))]
        void GrabarTipoCatalogo(List<EstructuraCatalogo> tipos);
    }
}
